package com.sale.system.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sale.system.domain.SysDocAudit;
import com.sale.system.domain.SysDocCheck;
import com.sale.system.domain.SysDocument;
import com.sale.system.domain.dto.SysDocumentAuditDto;
import com.sale.system.domain.dto.SysDocumentCheckDto;
import com.sale.system.domain.dto.SysDocumentDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description 单据配置
 * @Param 数据层
 * @return
 * @Date
 * @Author hl
 **/
public interface SysDocumentMapper {


    /**
     * 根据id查询详情
     *
     * @param docId
     * @return
     */
    SysDocument selectDocumentListById(Long docId);

    /**
     * 批量删除单据配置
     *
     * @param docIdS
     * @return
     */
    int deleteDocumentById(String[] docIdS);

    /**
     * 新增单据配置
     *
     * @param sysDocument
     * @return
     */
    int insertDocument(SysDocument sysDocument);

    /**
     * 新增单据配置检验配置
     *
     * @param list 检验配置集合
     * @return
     */
    int insertDocumentCheck(List<SysDocCheck> list);

    /**
     * 新增单据配置审核配置
     *
     * @param audit 审核配置集合
     * @return
     */
    int insertDocumentAudit(List<SysDocAudit> audit);

    /**
     * 修改单据配置
     *
     * @param sysDocumentVo
     * @return
     */
    int updateDocument(SysDocument sysDocumentVo);

    /**
     * 删除单据配置（检验配置）
     *
     * @param docId
     * @return
     */
    int deleteDocumentCheck(long docId);

    /**
     * 删除单据配置（审核配置）
     *
     * @param docId
     * @return
     */
    int deleteDocumentAudit(long docId);

    /**
     * 根据单据配置id查询审核配置明细
     *
     * @param docId
     * @return
     */
    List<SysDocumentAuditDto> selectDocumentAuditDtoList(Long docId);

    /**
     * 根据单据配置id查询检验配置明细
     *
     * @param docId
     * @return
     */
    List<SysDocumentCheckDto> selectDocumentCheckDtoList(Long docId);


    /**
     * 查询配置单据是否唯一
     *
     * @param docConfig
     * @return
     */
    int selectDocConfigByIds(Long docConfig);

    /**
     * 查询该权限码下对应的编码
     *
     * @param docConfig
     * @return
     */
    String selectAuthorityCoding(String docConfig);

    /**
     * 查询单据配置
     *
     * @param build
     * @return
     */
    Page<SysDocumentDto> selectPageDocumentList(@Param("page") Page<SysDocument> build, @Param(Constants.WRAPPER) Wrapper<SysDocument> buildQueryWrapper);

    /**
     * 根据配置单据id查询检验配置明细
     * @param docConfig
     * @return
     */
    SysDocument selectDocumentConfigById(Long docConfig);

    /**
     * 根据单据配置编码获取检验配置信息
     */
    SysDocument getDataByCode(Long docConfig);
}
